CBMSTEVE.CA - Steve J. Gray's Homepage
CBMSTEVE.CA - Personal pages of Steve J. Gray
Changes Info Prototypes Remakes PET Projects CBM Projects Modding 3D Models KiCad Github Ohio Scientific Other My Software My Collections Facebooks

Softbox for CBM-II

Introduction

My friend Mike Naberezny got me interested in the SSE Softbox for the PET. The Softbox is a small external box with a Z80 CPU, 64K ram (60 usable), 4K ROM, IEEE interface, RS-232 interface, and Corvus hard drive interface. The Softbox is designed to run CP/M. It connects to the PET via the IEEE, and a small file "k.prg" is loaded that acts as a terminal on the PET. This "loader" program is under 2K in size.

Since the Softbox is IEEE, Mike and I thought it would be a good project to see if this could be ported to the CBM-II series of computers. This could run on the P500 making it possibly the first and only peripheral with software designed for P500!

Hardbox

I do not have a Softbox. I have a Hardbox. The Hardbox is made by the same company as the Softbox, and is in fact VERY similar. The Hardbox contains the same motherboard as the Softbox, but uses different firmware and slightly different components. The Hardbox is designed to be a controller for the Corvus hard drive and connect it to the PET via IEEE. By changing the firmware and some jumpers a Hardbox can be converted to a Softbox.

Operation

The Softbox works on both the PET 40 and 80 column machines and connects to the IEEE bus. It also requires an 8050 or compatible (SFD, 8250 or 8250LP in 8050 mode) IEEE drive to load the software and also hold the virtual CP/M file system. The Softbox loader is loaded into the PET and RUN. This causes the Softbox to wake up and attempt to boot CP/M from the disk. CP/M is stored on the disk in a separate "PARTITION" on the disk that only the Softbox understands. This partition is not visible to the PET. CP/M boots, displays a welcome message, and then you get the standard "A>" prompt.

Hardbox to Softbox Conversion

To convert a Hardbox to a Softbox you must burn a new set of firmware EPROMs. Mike Naberezny dumped the contents of the two 2716 EPROMs in his Softbox and posted them on his page here. I used the latest version. Next I had to change a couple small jumpers located near the back to the "2716" positions.

Understanding the PET Version

Electronically the Softbox connects to the CBM-II just like the PET would, but without software the box is useless. The CBM-II is similar enough to the PET that this is not extremely hard, but it is not trivial. The first step of the process was getting a copy of the "Loader" software. Luckily Mike N tracked that down. The next step was disassembling the software. The Loader was written in 6502 Machine Language with a BASIC header.

Using my own CBMXfer I was able to unassemble it (using a pre-release version not yet available). Mike set up a repository on Github and placed the disassembly there. We collaborated to figure out how everything worked. Our goal was to reformat the CBMXfer output and make a fully commented, relocatable, re-assembleable version of the existing PET software. This has been completed.

Porting Loader to CBM-II

There are a few issues to tackle in porting the code. The CBM-II machines have a different CPU and additional memory banking. More importantly, there is limited free RAM in BANK15. 1K to be exact. The 2K loader will not fit in BANK15, and moving it to another BANK will require a lot of extra coding. To start we are using VICE to test some functionality. Mike also added some RAM to $C000 by piggybacking on an existing chip. I have a 24K RAM cartridge I borrowed that I am using. Ultimately, we want to make the port work on a stock CBM-II machine.

It turns out that the CBM-II machines have a totally different implementation of IEEE compared to the PET. Mike connected up a logic analyzer to the PET to see what was going on and is trying to adapt that to the CBM-II port.

I've been working on the keyboard routine. The PET had a 10x8 matrix accessed by two i/o ports, but the CBM-II's have a 16x6 matrix accessed by three ports. The CBM-II has additional function keys as well as shifted symbols that can't easily be generated by manipulating bits.

Status

The project is complete. The code is running with addon RAM in BANK15. Due to limitations in the CBM-II architecture there is not enough RAM in bank 15 to hold the terminal software. Eventually we would like to get it running in BANK 1 so that you can simply DLOAD a single file and run it, but that will require a lot more time and effort.

Resources

Contact

Last updated: Nov 24/2015, 4:45pm EST

Send comments or feedback to Steve Gray(sjgray@rogers.com)